package it.ma.musicplayernew.holder;

import android.content.Context;
import android.view.View;

/**
 * MVC中的 C，用来控制视图和数据，对视图和数据进行合理的显示
 * @param <T>
 *
 * Created by Victor on 2015/6/24.
 */
public abstract class BaseViewHolder<T>
{
    //根View
	protected View	mRootView;
    //要显示的数据
	protected T		mData;

    protected Context mContext;

    public BaseViewHolder(Context context) {

        this.mContext = context;

        mRootView = initView();

        // 打标记
        mRootView.setTag(this);
    }

//	public BaseViewHolder() {
//		mRootView = initView();
//
//		// 打标记
//		mRootView.setTag(this);
//	}

    /**
     * 初始化View
     * @return
     */
	protected abstract View initView();

    /**
     * 刷新数据显示
     * @param data
     */
	protected abstract void refreshView(T data);

    /**
     * 刷新数据显示
     * @param data
     * @param position 下标
     */
    protected void refreshView(T data, int position){
        refreshView(data);
    }

    /**
     * 设置要显示的数据
     * @param data
     */
	public void setData(T data)
	{
		this.mData = data;

		// UI刷新
        refreshView(mData);
	}

    /**
     * 设置要显示的数据
     * @param data
     * @param position 下标
     */
    public void setData(T data, int position)
    {
        this.mData = data;

        // UI刷新
        refreshView(mData,position);
    }

    /**
     * 获取holder的根View
     * @return
     */
	public View getRootView()
	{
		return mRootView;
	}

    public void onDestroy(){

    }
}
